// pages/login/login.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
    username: '', // 用户名
    password: '', // 密码
    code: '', // 验证码
    captchaImg: '', // 验证码图片
    uuid: '', // 验证码唯一标识
    loading: false, // 登录按钮加载状态
    userId: '',
    id:'',
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 页面加载时获取验证码
    this.getCaptcha();
  },

  /**
   * 获取验证码
   */
  getCaptcha: function () {
    wx.request({
      url: 'http://localhost/dev-api/captchaImage',
      method: 'GET',
      success: (res) => {
        console.log('验证码获取成功:', res.data);
        if (res.data && res.data.code === 200) {
          this.setData({
            captchaImg: res.data.img,
            uuid: res.data.uuid,
            captchaEnabled: res.data.captchaEnabled,
            // 重置验证码输入
            code: ''
          });
          console.log('当前UUID:', res.data.uuid); // 调试用
        } else {
          wx.showToast({
            title: '获取验证码失败',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        console.error('获取验证码请求失败:', err);
        wx.showToast({
          title: '网络异常，请重试',
          icon: 'none'
        });
      }
    });
  },

  /**
   * 刷新验证码
   */
  refreshCaptcha: function () {
    this.getCaptcha();
  },

  /**
   * 输入用户名
   */
  inputUsername: function (e) {
    this.setData({
      username: e.detail.value
    });
  },

  /**
   * 输入密码
   */
  inputPassword: function (e) {
    this.setData({
      password: e.detail.value
    });
  },

  /**
   * 输入验证码
   */
  inputCode: function (e) {
    this.setData({
      code: e.detail.value
    });
  },

  /**
   * 登录方法
   */
  login: function () {
    // 从this.data中获取数据
    const username = this.data.username;
    const password = this.data.password;
    const code = this.data.code;
    const uuid = this.data.uuid;

    // 表单验证
    if (!username.trim()) {
      wx.showToast({
        title: '请输入账号',
        icon: 'none'
      });
      return;
    }

    if (!password.trim()) {
      wx.showToast({
        title: '请输入密码',
        icon: 'none'
      });
      return;
    }

    if (!code.trim()) {
      wx.showToast({
        title: '请输入验证码',
        icon: 'none'
      });
      return;
    }

    // 确保uuid存在
    if (!uuid) {
      wx.showToast({
        title: '验证码已失效，请刷新',
        icon: 'none'
      });
      this.getCaptcha(); // 刷新验证码
      return;
    }

    // 显示登录中状态
    this.setData({
      loading: true
    });

    console.log('登录请求参数:', {
      username,
      password,
      code,
      uuid
    }); // 调试用

    // 构建登录请求体
    const loginBody = {
      username: username,
      password: password,
      code: code,
      uuid: uuid
    };

    // 调用登录接口
    wx.request({
      url: 'http://localhost/dev-api/login',
      method: 'POST',
      header: {
        'content-type': 'application/json'
      },
      data: loginBody,
      success: (res) => {
        console.log('登录响应完整数据:', res); // 输出完整响应
        console.log('登录响应数据:', res.data); // 输出响应数据

        // 检查响应数据是否存在
        if (!res || !res.data) {
          wx.showToast({
            title: '服务器响应异常',
            icon: 'none'
          });
          this.getCaptcha(); // 刷新验证码
          return;
        }

        // 登录成功处理
        if (res.data.code === 200) {
          // 检查token是否存在
          if (res.data.token) {
            // 直接将token存入本地缓存
            wx.setStorageSync('token', res.data.token);
            console.log('登录成功，token已保存到本地缓存:', res.data.token);
            const app = getApp();
            app.globalData.username = username;
            app.globalData.token = res.data.token;

            //在后端新写一个接口，根据登录的用户名，查询该用户的user_id,然后把user_id存入全局变量中
            //在mine页面中，根据全局变量的user_id,去查询用户的信息，然后绑定到mine页面中
            // 根据用户名查询用户ID
            wx.request({
              url: `http://localhost:8080/system/user/login/${username}`, // 使用模板字符串插入用户名
              method: 'GET',
              header: {
                'Authorization': 'Bearer ' + res.data.token // 如果需要token认证
              },
              success: (userRes) => {
                console.log('获取用户信息完整响应:', userRes);

                if (userRes.data && userRes.data.code === 200) {
                  // 检查响应中的data字段
                  const userData = userRes.data.data;

                  if (userData) {
                    console.log('用户数据:', userData);

                    // 将用户ID存入全局变量
                    if (userData.userId) {
                      app.globalData.userId = userData.userId;
                      this.userId = userData.userId;
                      console.log('成功获取并存储用户userID:', userData.userId);
                      // 创建用户信息对象
                      const userInfo = {
                        userId: userData.userId,
                        nickName: username, // 使用用户名作为昵称
                        // 如果有其他用户信息，可以添加到这里
                      };
                      // 保存用户信息到全局变量和本地缓存
                      app.globalData.userInfo = userInfo;
                      wx.setStorageSync('userInfo', userInfo);
                      const baseUrl = app.globalData.baseUrl;
                      console.log('当前baseUrl:', baseUrl); // 调试用
                      

                      // 依据 userId 查询住户信息，决定跳转
                      wx.request({
                        url: `${baseUrl}/resident/resident/userIdList/${userData.userId}`,
                        method: 'GET',
                        header: {
                          'Authorization': 'Bearer ' + res.data.token
                        },
                        success: (resp) => {
                          console.log('得到的userId:', userData.userId);
                          console.log('查询到的用户信息 resp.data =', resp.data);
                          if (resp.data && (resp.data.code === 200 || resp.data.code === '200')) {
                            console.log('查询到的信息', resp.data);
                            
                            // 设置id
                            if (resp.data.id) {
                              this.setData({
                                id: resp.data.id
                              });
                              console.log('设置的id值为:', resp.data.id);
                            }
                            
                            // 初始化住户数据数组
                            const residentDataArray = Array.isArray(resp.data.data) ? resp.data.data : [];
                            console.log('住户数据数组长度:', residentDataArray.length);
                            
                            // 安全获取residentId
                            let residentId = null;
                            if (residentDataArray.length > 0 && residentDataArray[0].id) {
                              residentId = residentDataArray[0].id;
                              console.log('查询到的residentId值为:', residentId);
                              
                              // 将residentId赋值给全局变量和本地缓存
                              wx.setStorageSync('residentId', residentId);
                              const app = getApp();
                              app.globalData.residentId = residentId;
                              console.log('全局变量residentId已设置为:', residentId);
                            }
                            
                            // 判断是否跳转完善信息页面
                            if (residentDataArray.length === 0) {
                              // 未绑定——去完善信息
                              wx.showToast({
                                title: '请完善个人信息',
                                icon: 'none',
                                duration: 800
                              });
                              setTimeout(() => {
                                wx.redirectTo({
                                  url: '/pages/complete/complete'
                                });
                              }, 800);
                            } else {
                              // 已绑定——去首页
                              setTimeout(() => {
                                wx.switchTab({
                                  url: '/pages/index/index'
                                });
                              }, 300);
                            }
                          } else {
                            console.error('resident/list 返回非 200：', resp.data);
                            // 接口异常：兜底去完善信息
                            wx.showToast({
                              title: '获取住户信息失败，请完善个人信息',
                              icon: 'none',
                              duration: 800
                            });
                            setTimeout(() => {
                              wx.redirectTo({
                                url: '/pages/complete/complete'
                              });
                            }, 800);
                          }
                        },
                        fail: (err) => {
                          console.error('查询住户信息请求失败:', err);
                          // 请求失败：也跳转到完善信息页面
                          wx.showToast({
                            title: '网络异常，请完善个人信息',
                            icon: 'none',
                            duration: 800
                          });
                          setTimeout(() => {
                            wx.redirectTo({
                              url: '/pages/complete/complete'
                            });
                          }, 800);
                        }
                      });
                    } else {
                      console.error('用户数据中没有userId字段:', userData);
                    }
                  } else {
                    console.error('响应中没有data字段:', userRes.data);
                  }
                } else {
                  console.error('获取用户信息失败:', userRes.data);
                }
              },
              fail: (err) => {
                console.error('获取用户信息请求失败:', err);
              }
            });
            // 提示登录成功
            wx.showToast({
              title: '登录成功',
              icon: 'success'
            });
            // 注意：这里不需要重复判断，已在上面的请求回调中处理了跳转逻辑
          } else {
            console.error('登录成功但未返回token');
            wx.showToast({
              title: '登录异常，请重试',
              icon: 'none'
            });
          }
        } else {
          // 登录失败处理
          wx.showToast({
            title: res.data.msg || '登录失败，请重试',
            icon: 'none'
          });
          // 刷新验证码
          this.getCaptcha();
        }
      },
      fail: (err) => {
        // 请求失败处理
        console.error('登录请求失败:', err);
        wx.showToast({
          title: '网络异常，请重试',
          icon: 'none'
        });
        // 刷新验证码
        this.getCaptcha();
      },
      complete: () => {
        // 无论成功失败，都取消加载状态
        this.setData({
          loading: false
        });
      }
    });
  },

  /**
   * 跳转到注册页面
   */
  toRegister: function () {
    wx.navigateTo({
      url: '/pages/register/register'
    });
  }
});